package com.mmy.controller.train;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.alibaba.fastjson.JSONObject;
import com.mmy.domain.constzone.TConstZone;
import com.mmy.domain.sys.TSysUser;
import com.mmy.domain.train.TTrainStation;
import com.mmy.domain.train.VTrainStation;
import com.mmy.service.impl.constzone.ConstZoneServiceImpl;
import com.mmy.service.train.impl.TrainStationServiceImpl;

/**
 * 类的介绍：火车站信息
 *
 * @author shangzl
 * @date 创建日期：
 * @version 1.0
 */

@Controller
public class TrainStationController {

	@Autowired
	TrainStationServiceImpl trainStationServiceImpl;
	@Autowired
	ConstZoneServiceImpl constZoneServiceImpl;

	/**
	 * 函数功能说明：后台机场信息管理 显示机场基本信息
	 *
	 * @param 参数说明 vPlaneAirport
	 * @return 返回值说明 jsp页面
	 * @author 创建人 hanxl 修改人hanxl
	 * @date 创建日期 2020.11.18 修改时间2021.03.16
	 */
	@RequestMapping("/backtrainstationindex")
	public String backTrainStationIndex(HttpServletRequest request, Model model) {
//创建的航空公司信息不论谁登录显示全部  

		List<VTrainStation> lstTrainStation = trainStationServiceImpl.findAll();
		model.addAttribute("lstTrainStation", lstTrainStation);
		return "webbackground/train/TrainStationIndex";
	}

	/**
	 * 函数功能说明： 异步--火车站信息列表数据
	 * 
	 * @param 参数说明 vPlaneOrg
	 * @return 返回值说明 jsp页面
	 * @author 创建人 hanxl
	 * @date 创建日期 2021.03.17
	 *
	 */
	@RequestMapping("/backtrainstationjson")
	@ResponseBody
	public String backTrainStationJson(HttpServletRequest request, Model model) {

		// 接收的分页信息处理
		int page = Integer.parseInt(request.getParameter("page"));
		int rows = Integer.parseInt(request.getParameter("rows"));
		int startIndex = (page - 1) * rows;
		int count = rows;
		// 搜索条件

		String strStationName = request.getParameter("stationName");

		// 表格数据
		List<VTrainStation> lstTrainStation = trainStationServiceImpl.findSearch(strStationName, startIndex, count);
		for (VTrainStation vTrainStation : lstTrainStation) {
			Integer iZoneID = vTrainStation.getZoneID();
			String province = constZoneServiceImpl.findProvinceStr(iZoneID);

			vTrainStation.setZoneName(province + vTrainStation.getZoneName());
		}
		model.addAttribute("lstTrainStation", lstTrainStation);
		// 数据总数量
		int total = trainStationServiceImpl.queryCount(strStationName);
		Map<String, Object> ret = new HashMap<String, Object>();
		ret.put("rows", lstTrainStation);
		ret.put("total", total);
		return JSONObject.toJSONString(ret);
	}

	/**
	 * 函数功能说明：后台火车站信息管理创建 进入页面
	 *
	 * @param 参数说明
	 * @return 返回值说明 jsp页面
	 * @author 创建人 hanxl 修改人hanxl
	 * @date 创建日期 2020.11.18 修改时间2021.03.16
	 */
	@RequestMapping(value = "/backcreatetrainstation")
	public String backCreateTrainStation(Model model) {
		// 查询所有省
		List<TConstZone> lstZoneProvince = constZoneServiceImpl.findAllProvince();
		model.addAttribute("lstZoneProvince", lstZoneProvince);

		return "webbackground/train/CreateTrainStation";
	}

	/**
	 * 函数功能说明： 新建火车站信息
	 *
	 * @param 参数说明
	 * @return 返回值说明 jsp页面
	 * @throws 异常处理说明
	 * @author 创建人 shangzl 修改人hanxl
	 * @date 创建日期修改时间2021.03.17
	 */

	@RequestMapping(value = "/backsavecreatetrainstation")
	public String backSaveCreateTrainStation(TTrainStation tTrainStation, HttpSession session) {

		TSysUser sessionSysUser = (TSysUser) session.getAttribute("tSysUser");
		trainStationServiceImpl.createTrainStation(tTrainStation, sessionSysUser);
		return "redirect:backtrainstationindex";
	}

	/**
	 * 函数功能说明： 删除火车站信息
	 *
	 * @param 参数说明
	 * @return 返回值说明 jsp页面
	 * @throws 异常处理说明
	 * @author 创建人 shangzl
	 * @date 创建日期
	 */

	@PostMapping("/deltrainstation")
	@ResponseBody
	public String DelTrainStation(String checkList) {

		String[] checklist = checkList.split(",");
		List<Integer> lstStationID = new ArrayList<>();

		for (String str : checklist) {
			lstStationID.add(Integer.parseInt(str));
		}

		trainStationServiceImpl.delTrainStation(lstStationID);

		return "webbackground/train/trainstation";
	}

	/**
	 * 函数功能说明：修改火车站信息
	 *
	 * @param 参数说明
	 * @return 返回值说明 jsp页面
	 * @throws 异常处理说明
	 * @author 创建人 shangzl 修改人hanxl
	 * @date 创建日期修改时间2021.03.17
	 */

	@RequestMapping(value = "/backtoupdatetrainstation")
	public String backToUpdateTrainStation(HttpServletRequest request, Model model) {

		int iStationID = Integer.parseInt(request.getParameter("iStationID"));

		TTrainStation dbTrainStation = trainStationServiceImpl.findByStationID(iStationID);
		model.addAttribute("dbTrainStation", dbTrainStation);

		// 查询所有省
		List<TConstZone> lstZoneProvince = constZoneServiceImpl.findAllProvince();
		model.addAttribute("lstZoneProvince", lstZoneProvince);
		// 获取火车站所在的省
		int strProvinceID = constZoneServiceImpl.findProvince(dbTrainStation.getZoneID()).getZoneID();
		model.addAttribute("strProvinceID", strProvinceID);
		// 查询火车站所在省 所有的市
		List<TConstZone> lstZoneCity = constZoneServiceImpl.findCities(dbTrainStation.getZoneID());
		model.addAttribute("lstZoneCity", lstZoneCity);

		return "webbackground/train/UpdateTrainStation";

	}

	/**
	 * 函数功能说明：修改火车站信息 提交
	 *
	 * @param 参数说明
	 * @return 返回值说明 jsp页面
	 * @throws 异常处理说明
	 * @author 创建人 shangzl 修改人hanxl
	 * @date 创建日期修改时间2021.03.17
	 */

	@RequestMapping(value = "/backsaveupdatetrainstation")
	public String backSaveUpdateTrainStation(TTrainStation tTrainStation, HttpSession session) {
		TSysUser sessionSysUser = (TSysUser) session.getAttribute("tSysUser");
		trainStationServiceImpl.updateTrainStation(tTrainStation, sessionSysUser);
		return "redirect:backtrainstationindex";
	}

	/**
	 * 函数功能说明： 查询火车站信息
	 *
	 * @param 参数说明
	 * @return 返回值说明 jsp页面
	 * @throws 异常处理说明
	 * @author 创建人 shangzl
	 * @date 创建日期
	 */
	@RequestMapping(value = "/searchtrainstation")
	public String FindPlaneAirport(HttpServletRequest request, Model model) {

		String strStationName = request.getParameter("StationName");
		if (strStationName == "") {
			List<VTrainStation> lstTrainStation = trainStationServiceImpl.findAll();
			model.addAttribute("tlist", lstTrainStation);
			request.setAttribute("strStationName", strStationName);
			return "webbackground/train/trainstation";
		} else {
			List<VTrainStation> lstTrainStation = trainStationServiceImpl.findByStationName(strStationName);
			model.addAttribute("tlist", lstTrainStation);
			request.setAttribute("strStationName", strStationName);
			return "webbackground/train/trainstation";
		}

	}

}
